import { loginAPI, getUserInfoAPI, getUserDetaillByIdAPI } from '@/api/user'
export default {
  // token jiatu Vuex
  // 初始化 token 入 Vuex的过程
  namespaced: true,
  state: {
    token: null,
    userInfo: null,
    hrsaasTime: 0
  },
  mutations: {
    setToken(state, token) {
      state.token = token
    },
    removeToken(state) {
      state.token = null
    },
    setUserInfo(state, userInfo) {
      state.userInfo = userInfo
    },
    removeUserInfo(state) {
      state.userInfo = null
    },
    sethrsaasTime(state, time) {
      state.hrsaasTime = time
    }
  },
  // token 来自于哪里
  // 成功登录之后 会返回 token
  actions: {
    // 封装一个登录action
    async loginAction({ commit }, data) {
      const res = await loginAPI(data)
      // console.log(res)
      // 提起一个mutation
      commit('setToken', res)
      commit('sethrsaasTime', Date.now())
    },
    // 封装一个 获取userInfo的action
    async getUserInfoAction({ commit }) {
      const res = await getUserInfoAPI()
      // 调用 基本详情接口
      const baseRes = await getUserDetaillByIdAPI(res.userId)
      // console.log(res)
      // console.log(baseRes)
      // 提起一个mutation
      // 在 gerrers 映射 username
      // userInfo - null 兼容一下错误
      commit('setUserInfo', { ...res, ...baseRes })
    },
    logout({ commit }) {
      commit('removeToken')
      commit('removeUserInfo')
    }
  }
}

